<?php
/**
 * @author Denis Makoviychuk
 * @copyright 2007
 */
/*
if (!defined("DIRECT_ACCESS"))
{
	die("Прямой вызов невозможен");
}
*/

// Класс наложения "водного знака"
//include 'api.watermark.php';
/**
** Функция загрузки изображения с уменьшением размеров и созданием двух уменьшенных копий
** допускаются форматы указанные в $extensions
**/

function upload_image (
                        $file_in, // array('name'=>имя_загруженного файла.расширение,'tmp_name'=>путь_к_временному_файлу)
                        $file_out, // имя файла для сохранения
                        $dir = '/', // папка в которую сохраняются изображения (должна быть в папке upload/) ex: /img/
                        $size = array("800", "300", "100"), // массив со значением максимальных габаритов изображения
                        $save_source = 0, // флаг о необходимости сохранять исходное изображение
                        $ret_format = 'jpg' // формат в котором сохраняется изображение ('jpg'|'png'|'gif'|'') '' - исходный формат
                    )
{

	// Новые размеры изображения ($main_size) и уменьшенных копий ($small_size, $medium_size) в px
	$small_size = $size[2];
	$medium_size = $size[1];
	$main_size = $size[0];

	// Допустимые форматы изображений (jpg, gif, png)
	$extensions = array ("jpg", "gif", "png","JPG", "GIF", "PNG");
	//print_var($file_in);
	if($file_in['name'] != '')
	{
		$ext = strtolower(substr($file_in['name'], -3, 3));
		if ($ext == 'peg') $ext = 'jpg';

        if (!in_array($ext, $extensions))
		{
			return false;
		}

		if ($ret_format == '')
		{
            $ret_format = $ext;
        }

		$full_name = ROOT_DIR.'/upload'.$dir.$file_out.'.'.$ret_format;
		$full_small_name = ROOT_DIR.'/upload'.$dir.$file_out.'_small.'.$ret_format;
		$full_med_name = ROOT_DIR.'/upload'.$dir.$file_out.'_med.'.$ret_format;

		move_uploaded_file($file_in['tmp_name'],$full_name);
		chmod($full_name, 0777);

		$filedata = getimagesize($full_name);
		//print_var($filedata);
		if($filedata[2])
		{
			$w = $filedata[0];
			$h = $filedata[1];

			if ($w > 6000 || $h > 6000)
			{
                return false;
            }

			if ($main_size > $w)
			{
                $main_size = $w;
            }
            if ($main_size > $h)
			{
                $main_size = $h;
            }
            if ($medium_size > $h)
			{
			    $main_size = $h;
                $medium_size = $h;
            }
            if ($medium_size > $w)
			{
			    $main_size = $w;
                $medium_size = $w;
            }
            if ($small_size > $h)
			{
			    $small_size = $h;
			    $main_size = $h;
                $medium_size = $h;
            }
            if ($small_size > $w)
			{
			    $small_size = $w;
			    $main_size = $w;
                $medium_size = $w;
            }

            // Если ширина больше высоты и максимального нового размера
			if ($w > $h && $w > $main_size)
			{
				$k = $main_size/$w; $k2 = $small_size/$w; $k3 = $medium_size/$w;
			}
			// Если высота больше ширины и максимального нового размера
			elseif ($h >= $w && $h > $main_size)
			{
				$k = $main_size/$h; $k2 = $small_size/$h;$k3 = $medium_size/$h;
			}
			elseif ($w > $h)
			{
				$k = 1; $k2 = $small_size/$w; $k3 = $medium_size/$w;
			}
			else
			{
				$k = 1; $k2 = $small_size/$h; $k3 = $medium_size/$h;
			}
			$nw = intval($k*$w); $nh = intval($k*$h);
			$nw2 = intval($k2*$w); $nh2 = intval($k2*$h);
			$nw3 = intval($k3*$w); $nh3 = intval($k3*$h);


			switch($filedata[2])
			{
				case 1: $im = @imagecreatefromgif($full_name);
				        $out_ext = 'gif';
						break;
				case 2: $im = @imagecreatefromjpeg($full_name);
				        $out_ext = 'jpg';
						break;
				case 3: $im = @imagecreatefrompng($full_name);
				        $out_ext = 'png';
						break;
			}
			$dst = imagecreatetruecolor($nw,$nh);
			ImageCopyResampled($dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
            /*
			$watermark = new watermark();
			$main_img_obj = $dst;
			if ($w >= 1000)
			{
                $watermark_img_obj = imagecreatefrompng($_SERVER['DOCUMENT_ROOT']."/i/watermark.png");
		    }
		    else
		    {
                $watermark_img_obj = imagecreatefrompng($_SERVER['DOCUMENT_ROOT']."/i/watermark_small.png");
            }
			$return_img_obj = $watermark->create_watermark($main_img_obj, $watermark_img_obj, 1);
			*/
			imagejpeg($dst, $full_name, 80);

			imagedestroy($im);

			$filedata = getimagesize($full_name);
			$w = $filedata[0];
			$h = $filedata[1];
			if ($out_ext == 'gif')
			{
                $im = @imagecreatefromgif($full_name);
            }
            elseif($out_ext == 'png')
            {
                $im = @imagecreatefrompng($full_name);
            }
            else
            {
                $im = @imagecreatefromjpeg($full_name);
            }

			$dst3 = imagecreatetruecolor($nw3,$nh3);
			ImageCopyResampled($dst3, $im, 0, 0, 0, 0, $nw3, $nh3, $w, $h);

			if ($out_ext == 'gif')
			{
                imagegif($dst3,$full_med_name,80);
            }
            elseif($out_ext == 'png')
            {
                imagepng($dst3,$full_med_name,80);
            }
            else
            {
                imagejpeg($dst3,$full_med_name,80);
            }

			imagedestroy($im);

			$filedata = getimagesize($full_med_name);
			$w = $filedata[0];
			$h = $filedata[1];

			if ($out_ext == 'gif')
			{
                $im = @imagecreatefromgif($full_med_name);
            }
            elseif($out_ext == 'png')
            {
                $im = @imagecreatefrompng($full_med_name);
            }
            else
            {
                $im = @imagecreatefromjpeg($full_med_name);
            }

			$dst2 = imagecreatetruecolor($nw2,$nh2);
			ImageCopyResampled($dst2, $im, 0, 0, 0, 0, $nw2, $nh2, $w, $h);

            if ($out_ext == 'gif')
			{
                imagegif($dst2,$full_small_name,80);
            }
            elseif($out_ext == 'png')
            {
                imagepng($dst2,$full_small_name,80);
            }
            else
            {
                imagejpeg($dst2,$full_small_name,80);
            }


			imagedestroy($im);
			return true;
		}
		elseif($filedata === false)
		{
			return false;
		}

	}
	else
	{
		return false;
	}
}
/**
** Функция загрузки изображения с уменьшением размеров и созданием двух уменьшенных копий
** допускаются форматы указанные в $extensions
**/
class ImageWizard
{
	function upload_image (
	                        $file, // array('name'=>имя_загруженного файла.расширение,'tmp_name'=>путь_к_временному_файлу)
	                        $name, // имя файла для сохранения
	                        $dir = '/', // папка в которую сохраняются изображения (должна быть в папке upload/) ex: /img/
	                        $sizes = array("full"=>"800"), // массив со значением и суффиксом максимальных габаритов изображения (full), а также значениями и суффиксами меньших копий
	                        $save_source = 0, // флаг о необходимости сохранять исходное изображение
	                        $ret_format = 'jpg' // формат в котором сохраняется изображение ('jpg'|'png'|'gif'|'') '' - исходный формат
	                    )
	{
	
		// Новые размеры изображения ($main_size) и уменьшенных копий ($copy_sizes) в px
		if(isset($sizes['full']))
		{
			$main_size = intval($sizes['full']);
		}
		foreach($sizes as $k=>$v)
		{
			if(isset($v) and intval($v) != 0 and $k != "full" and $k != "src")
			{
				$copy_sizes[$k] = intval($v);
			}
		}
	
		// Допустимые форматы изображений (jpg, gif, png)
		$extensions = array ("jpg", "gif", "png","JPG", "GIF", "PNG");
		// если файл был удачно загружен на сервер
		if($file['name'] != '')
		{
			$ext = strtolower(substr($file_in['name'], -3, 3));
			if ($ext == 'peg') $ext = 'jpg';
	
	        if (!in_array($ext, $extensions))
			{
				return false;
			}
			// если не указан формат возвращаемых изображений, то используем определенный функцией
			if ($ret_format == '')
			{
	            $ret_format = $ext;
	        }
	        // пути к создаваемым файлам
			$full_name = ROOT_DIR.'/upload'.$dir.$name.'.'.$ret_format;
			// если включено сохранение оригинала, то копируем сначала в оригинал, потом в большую картинку
	        if(isset($save_source) and intval($save_source) == 1)
	        {
	        	$src_name = ROOT_DIR.'/upload'.$dir.$name.'_src.'.$ret_format;
				move_uploaded_file($file['tmp_name'],$src_name);
				copy($src_name,$full_name);
				chmod($full_name, 0777);
	        }
	        // иначе копируем только в большую картинку
	        else
	        {
				move_uploaded_file($file['tmp_name'],$full_name);
				chmod($full_name, 0777);
	        }
	        // созжаем пути к остальным копиям
	        if(isset($copy_sizes))
	        {
				foreach($copy_sizes as $ckey=>$csize)
				{
					$copy_path[$ckey] = ROOT_DIR.'/upload'.$dir.$name.'_'.$ckey.'.'.$ret_format;
				}
	        }
	        // получаем размеры оригинала
			$filedata = getimagesize($full_name);
			// если размеры получены
			if($filedata[2])
			{
				$w = $filedata[0];// ширина оригинала
				$h = $filedata[1];// высота оригинала
				// если размеры изображения слишком большие для обработки на нашем хлипком серваке - ошибка
				if ($w > 6000 || $h > 6000)
				{
	                return false;
	            }
	            // если требуемый размер основной фотки больше ширины оригинала - уменьшаем его до ширины оригинала
				if ($main_size > $w)
				{
	                $main_size = $w;
	            }
	            // если требуемый размер основной фотки больше высоты оригинала - уменьшаем его до высоты оригинала
	            if ($main_size > $h)
				{
	                $main_size = $h;
	            }
	            // тоже делаем с размерами копий
	            if(isset($copy_sizes))
	            {
	            	if(isset($copy_sizes))
	            	{
		            	foreach($copy_sizes as $ckey=>$csize)
		            	{
		            		if($csize > $h)
		            		{
		            			$main_size = $h;
		            			$copy_sizes[$ckey] = $h;
		            		}
		            		if($csize > $w)
		            		{
		            			$main_size = $w;
		            			$copy_sizes[$ckey] = $w;
		            		}
		            	}
	            	}
	            }
	            // Если ширина больше высоты и максимального нового размера
				if ($w > $h && $w > $main_size)
				{
					$k = $main_size/$w;
					if(isset($copy_sizes))
					{
						foreach($copy_sizes as $ckey=>$csize)
						{
							$koeff[$ckey] = $csize / $w;
						}
					}
				}
				// Если высота больше ширины и максимального нового размера
				elseif ($h >= $w && $h > $main_size)
				{
					$k = $main_size/$h;
					if(isset($copy_sizes))
					{
						foreach($copy_sizes as $ckey=>$csize)
						{
							$koeff[$ckey] = $csize / $h;
						}
					}
				}
				elseif ($w > $h)
				{
					$k = 1;
					if(isset($copy_sizes))
					{
						foreach($copy_sizes as $ckey=>$csize)
						{
							$koeff[$ckey] = $csize / $w;
						}
					}
				}
				else
				{
					$k = 1;
					if(isset($copy_sizes))
					{
						foreach($copy_sizes as $ckey=>$csize)
						{
							$koeff[$ckey] = $csize / $h;
						}
					}
				}
				$nw = intval($k*$w); $nh = intval($k*$h);
				if(isset($copy_sizes))
				{
					foreach($copy_sizes as $ckey=>$csize)
					{
						$new_csizes[$ckey]["width"] = intval($koeff[$ckey]*$w);
						$new_csizes[$ckey]["height"] = intval($koeff[$ckey]*$h);
					}
				}
				switch($filedata[2])
				{
					case 1: $im = @imagecreatefromgif($full_name);
					        $out_ext = 'gif';
							break;
					case 2: $im = @imagecreatefromjpeg($full_name);
					        $out_ext = 'jpg';
							break;
					case 3: $im = @imagecreatefrompng($full_name);
					        $out_ext = 'png';
							break;
				}
				$dst = imagecreatetruecolor($nw,$nh);
				ImageCopyResampled($dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
	            if(isset($watermark_flag) and intval($watermark_flag) == 1)
	            {
					$watermark = new watermark();
					$main_img_obj = $dst;
					if ($w >= 1000)
					{
		                $watermark_img_obj = imagecreatefrompng($_SERVER['DOCUMENT_ROOT']."/i/watermark.png");
				    }
				    else
				    {
		                $watermark_img_obj = imagecreatefrompng($_SERVER['DOCUMENT_ROOT']."/i/watermark_small.png");
		            }
					$return_img_obj = $watermark->create_watermark($main_img_obj, $watermark_img_obj, 1);
	            }
				imagejpeg($dst, $full_name, 80);
				imagedestroy($im);
				$filedata = getimagesize($full_name);
				$w = $filedata[0];
				$h = $filedata[1];
				if ($out_ext == 'gif')
				{
	                $im = @imagecreatefromgif($full_name);
	            }
	            elseif($out_ext == 'png')
	            {
	                $im = @imagecreatefrompng($full_name);
	            }
	            else
	            {
	                $im = @imagecreatefromjpeg($full_name);
	            }
	            if(isset($copy_sizes))
	            {
		            foreach($copy_sizes as $ckey=>$csize)
		            {
		            	$copy_dst = imagecreatetruecolor($new_csizes[$ckey]['width'],$new_csizes[$ckey]['height']);
		            	ImageCopyResampled($copy_dst, $im, 0, 0, 0, 0, $new_csizes[$ckey]['width'], $new_csizes[$ckey]['height'], $w, $h);
						if ($out_ext == 'gif')
						{
			                imagegif($copy_dst,$copy_path[$ckey],80);
			            }
			            elseif($out_ext == 'png')
			            {
			                imagepng($copy_dst,$copy_path[$ckey],80);
			            }
			            else
			            {
			                imagejpeg($copy_dst,$copy_path[$ckey],80);
			            }
		            }
	            }
				imagedestroy($im);
				return true;
			}
			// иначе возврат ошибки
			elseif($filedata === false)
			{
				return false;
			}
		}
		// иначе возврат ошибки
		else
		{
			return false;
		}
	}
}
function copy_image_and_resize (
                        $file_path, // array('name'=>имя_загруженного файла.расширение,'tmp_name'=>путь_к_временному_файлу)
                        $name, // имя файла для сохранения
                        $dir = '/', // папка в которую сохраняются изображения (должна быть в папке upload/) ex: /img/
                        $sizes = array("full"=>"800"), // массив со значением и суффиксом максимальных габаритов изображения (full), а также значениями и суффиксами меньших копий
                        $save_source = 0, // флаг о необходимости сохранять исходное изображение
                        $ret_format = 'jpg' // формат в котором сохраняется изображение ('jpg'|'png'|'gif'|'') '' - исходный формат
                    )
{

	// Новые размеры изображения ($main_size) и уменьшенных копий ($copy_sizes) в px
	if(isset($sizes['full']))
	{
		$main_size = intval($sizes['full']);
	}
	foreach($sizes as $k=>$v)
	{
		if(isset($v) and intval($v) != 0 and $k != "full" and $k != "src")
		{
			$copy_sizes[$k] = intval($v);
		}
	}

	// Допустимые форматы изображений (jpg, gif, png)
	$extensions = array ("jpg", "gif", "png","JPG", "GIF", "PNG");
	// если файл был удачно загружен на сервер
	if(file_exists($file_path))
	{
		$tmp_upload_file=explode(".",strtolower(basename($file_path)));
		$ext = $tmp_upload_file[1];
		if ($ext == 'peg') $ext = 'jpg';

        if (!in_array($ext, $extensions))
		{
			return false;
		}
		// если не указан формат возвращаемых изображений, то используем определенный функцией
		if ($ret_format == '')
		{
            $ret_format = $ext;
        }
        // пути к создаваемым файлам
		$full_name = ROOT_DIR.'/upload'.$dir.$name.'.'.$ret_format;
		// если включено сохранение оригинала, то копируем сначала в оригинал, потом в большую картинку
        if(isset($save_source) and intval($save_source) == 1)
        {
        	$src_name = ROOT_DIR.'/upload'.$dir.$name.'_src.'.$ret_format;
			copy($file_path,$src_name);
			chmod($src_name, 0777);
			copy($src_name,$full_name);
			chmod($full_name, 0777);
        }
        // иначе копируем только в большую картинку
        else
        {
			copy($file_path,$full_name);
			chmod($full_name, 0777);
        }
        // созжаем пути к остальным копиям
        if(isset($copy_sizes))
        {
			foreach($copy_sizes as $ckey=>$csize)
			{
				$copy_path[$ckey] = ROOT_DIR.'/upload'.$dir.$name.'_'.$ckey.'.'.$ret_format;
			}
        }
        // получаем размеры оригинала
		$filedata = getimagesize($full_name);
		// если размеры получены
		if($filedata[2])
		{
			$w = $filedata[0];// ширина оригинала
			$h = $filedata[1];// высота оригинала
			// если размеры изображения слишком большие для обработки на нашем хлипком серваке - ошибка
			if ($w > 6000 || $h > 6000)
			{
                return false;
            }
            // если требуемый размер основной фотки больше ширины оригинала - уменьшаем его до ширины оригинала
			if ($main_size > $w)
			{
                $main_size = $w;
            }
            // если требуемый размер основной фотки больше высоты оригинала - уменьшаем его до высоты оригинала
            if ($main_size > $h)
			{
                $main_size = $h;
            }
            // тоже делаем с размерами копий
            if(isset($copy_sizes))
            {
            	if(isset($copy_sizes))
            	{
	            	foreach($copy_sizes as $ckey=>$csize)
	            	{
	            		if($csize > $h)
	            		{
	            			$main_size = $h;
	            			$copy_sizes[$ckey] = $h;
	            		}
	            		if($csize > $w)
	            		{
	            			$main_size = $w;
	            			$copy_sizes[$ckey] = $w;
	            		}
	            	}
            	}
            }
            // Если ширина больше высоты и максимального нового размера
			if ($w > $h && $w > $main_size)
			{
				$k = $main_size/$w;
				if(isset($copy_sizes))
				{
					foreach($copy_sizes as $ckey=>$csize)
					{
						$koeff[$ckey] = $csize / $w;
					}
				}
			}
			// Если высота больше ширины и максимального нового размера
			elseif ($h >= $w && $h > $main_size)
			{
				$k = $main_size/$h;
				if(isset($copy_sizes))
				{
					foreach($copy_sizes as $ckey=>$csize)
					{
						$koeff[$ckey] = $csize / $h;
					}
				}
			}
			elseif ($w > $h)
			{
				$k = 1;
				if(isset($copy_sizes))
				{
					foreach($copy_sizes as $ckey=>$csize)
					{
						$koeff[$ckey] = $csize / $w;
					}
				}
			}
			else
			{
				$k = 1;
				if(isset($copy_sizes))
				{
					foreach($copy_sizes as $ckey=>$csize)
					{
						$koeff[$ckey] = $csize / $h;
					}
				}
			}
			$nw = intval($k*$w); $nh = intval($k*$h);
			if(isset($copy_sizes))
			{
				foreach($copy_sizes as $ckey=>$csize)
				{
					$new_csizes[$ckey]["width"] = intval($koeff[$ckey]*$w);
					$new_csizes[$ckey]["height"] = intval($koeff[$ckey]*$h);
				}
			}
			switch($filedata[2])
			{
				case 1: $im = @imagecreatefromgif($full_name);
				        $out_ext = 'gif';
						break;
				case 2: $im = @imagecreatefromjpeg($full_name);
				        $out_ext = 'jpg';
						break;
				case 3: $im = @imagecreatefrompng($full_name);
				        $out_ext = 'png';
						break;
			}
			$dst = imagecreatetruecolor($nw,$nh);
			ImageCopyResampled($dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
            if(isset($watermark_flag) and intval($watermark_flag) == 1)
            {
				$watermark = new watermark();
				$main_img_obj = $dst;
				if ($w >= 1000)
				{
	                $watermark_img_obj = imagecreatefrompng($_SERVER['DOCUMENT_ROOT']."/i/watermark.png");
			    }
			    else
			    {
	                $watermark_img_obj = imagecreatefrompng($_SERVER['DOCUMENT_ROOT']."/i/watermark_small.png");
	            }
				$return_img_obj = $watermark->create_watermark($main_img_obj, $watermark_img_obj, 1);
            }
			imagejpeg($dst, $full_name, 80);
			imagedestroy($im);
			$filedata = getimagesize($full_name);
			$w = $filedata[0];
			$h = $filedata[1];
			if ($out_ext == 'gif')
			{
                $im = @imagecreatefromgif($full_name);
            }
            elseif($out_ext == 'png')
            {
                $im = @imagecreatefrompng($full_name);
            }
            else
            {
                $im = @imagecreatefromjpeg($full_name);
            }
            if(isset($copy_sizes))
            {
	            foreach($copy_sizes as $ckey=>$csize)
	            {
	            	$copy_dst = imagecreatetruecolor($new_csizes[$ckey]['width'],$new_csizes[$ckey]['height']);
	            	ImageCopyResampled($copy_dst, $im, 0, 0, 0, 0, $new_csizes[$ckey]['width'], $new_csizes[$ckey]['height'], $w, $h);
					if ($out_ext == 'gif')
					{
		                imagegif($copy_dst,$copy_path[$ckey],80);
		            }
		            elseif($out_ext == 'png')
		            {
		                imagepng($copy_dst,$copy_path[$ckey],80);
		            }
		            else
		            {
		                imagejpeg($copy_dst,$copy_path[$ckey],80);
		            }
	            }
            }
			imagedestroy($im);
			return true;
		}
		// иначе возврат ошибки
		elseif($filedata === false)
		{
			return false;
		}
	}
	// иначе возврат ошибки
	else
	{
		return false;
	}
}

/**
 * upload_img
 * @deprecated
** Функция загрузки изображения с уменьшением размеров и созданием двух уменьшенных копий
** допускаются форматы указанные в $extensions
**/

//TODO:сохранение исходного файла 25 Май 2008
//TODO:сохранение изображений в формате $ret_format 25 Май 2008

function upload_img ($obj_id, //ID объекта к которому относится изображение, используется в имени файла. $obj_id_$k.jpg
                        $file_in, // имя файла в массиве _FILES
                        $file_out, // имя файла для сохранения
                        $dir = '/', // папка в которую сохраняются изображения (должна быть в папке upload/) ex: /img/
                        $size = array("800", "300", "100"), // массив со значением максимальных габаритов изображения
                        $save_source = 0, // флаг о необходимости сохранять исходное изображение
                        $ret_format = 'jpg' // формат в котором сохраняется изображение (jpg, png, gif, ish) ish - исходный формат
                    )
{

	// Новые размеры изображения ($main_size) и уменьшенных копий ($small_size, $medium_size) в px
	$small_size = $size[2];
	$medium_size = $size[1];
	$main_size = $size[0];

	// Допустимые форматы изображений (jpg, gif, png)
	$extensions = array ("jpg", "gif", "png");

	if($_FILES[$file_in]['name']!='')
	{
		$ext = strtolower(substr($_FILES[$file_in]['name'], -3, 3));
		if ($ext == 'peg') $ext = 'jpg';

        if (!in_array($ext, $extensions))
		{
			return false;
		}

		if ($ret_format == 'ish')
		{
            $ret_format = $ext;
        }

		$full_name = $_SERVER['DOCUMENT_ROOT'].'/upload'.$dir.$file_out.'.'.$ret_format;
		$full_small_name = $_SERVER['DOCUMENT_ROOT'].'/upload'.$dir.$file_out.'_small.'.$ret_format;
		$full_med_name = $_SERVER['DOCUMENT_ROOT'].'/upload'.$dir.$file_out.'_med.'.$ret_format;

		move_uploaded_file($_FILES[$file_in]['tmp_name'],$full_name);
		chmod($full_name, 0777);

		$filedata = getimagesize($full_name);
		if($filedata[2])
		{
			$w = $filedata[0];
			$h = $filedata[1];

			if ($w > 6000 || $h > 6000)
			{
                return false;
            }

			if ($main_size > $w)
			{
                $main_size = $w;
            }
            if ($main_size > $h)
			{
                $main_size = $h;
            }
            if ($medium_size > $h)
			{
			    $main_size = $h;
                $medium_size = $h;
            }
            if ($medium_size > $w)
			{
			    $main_size = $w;
                $medium_size = $w;
            }
            if ($small_size > $h)
			{
			    $small_size = $h;
			    $main_size = $h;
                $medium_size = $h;
            }
            if ($small_size > $w)
			{
			    $small_size = $w;
			    $main_size = $w;
                $medium_size = $w;
            }

            // Если ширина больше высоты и максимального нового размера
			if ($w > $h && $w > $main_size)
			{
				$k = $main_size/$w; $k2 = $small_size/$w; $k3 = $medium_size/$w;
			}
			// Если высота больше ширины и максимального нового размера
			elseif ($h >= $w && $h > $main_size)
			{
				$k = $main_size/$h; $k2 = $small_size/$h;$k3 = $medium_size/$h;
			}
			elseif ($w > $h)
			{
				$k = 1; $k2 = $small_size/$w; $k3 = $medium_size/$w;
			}
			else
			{
				$k = 1; $k2 = $small_size/$h; $k3 = $medium_size/$h;
			}
			$nw = intval($k*$w); $nh = intval($k*$h);
			$nw2 = intval($k2*$w); $nh2 = intval($k2*$h);
			$nw3 = intval($k3*$w); $nh3 = intval($k3*$h);


			switch($filedata[2])
			{
				case 1: $im = @imagecreatefromgif($full_name);
				        $out_ext = 'gif';
						break;
				case 2: $im = @imagecreatefromjpeg($full_name);
				        $out_ext = 'jpg';
						break;
				case 3: $im = @imagecreatefrompng($full_name);
				        $out_ext = 'png';
						break;
			}
			$dst = imagecreatetruecolor($nw,$nh);
			ImageCopyResampled($dst, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
            /*
			$watermark = new watermark();
			$main_img_obj = $dst;
			if ($w >= 1000)
			{
                $watermark_img_obj = imagecreatefrompng($_SERVER['DOCUMENT_ROOT']."/i/watermark.png");
		    }
		    else
		    {
                $watermark_img_obj = imagecreatefrompng($_SERVER['DOCUMENT_ROOT']."/i/watermark_small.png");
            }
			$return_img_obj = $watermark->create_watermark($main_img_obj, $watermark_img_obj, 1);
			*/
			imagejpeg($dst, $full_name, 80);

			imagedestroy($im);

			$filedata = getimagesize($full_name);
			$w = $filedata[0];
			$h = $filedata[1];
			if ($out_ext == 'gif')
			{
                $im = @imagecreatefromgif($full_name);
            }
            elseif($out_ext == 'png')
            {
                $im = @imagecreatefrompng($full_name);
            }
            else
            {
                $im = @imagecreatefromjpeg($full_name);
            }

			$dst3 = imagecreatetruecolor($nw3,$nh3);
			ImageCopyResampled($dst3, $im, 0, 0, 0, 0, $nw3, $nh3, $w, $h);

			if ($out_ext == 'gif')
			{
                imagegif($dst3,$full_med_name,80);
            }
            elseif($out_ext == 'png')
            {
                imagepng($dst3,$full_med_name,80);
            }
            else
            {
                imagejpeg($dst3,$full_med_name,80);
            }

			imagedestroy($im);

			$filedata = getimagesize($full_med_name);
			$w = $filedata[0];
			$h = $filedata[1];

			if ($out_ext == 'gif')
			{
                $im = @imagecreatefromgif($full_med_name);
            }
            elseif($out_ext == 'png')
            {
                $im = @imagecreatefrompng($full_med_name);
            }
            else
            {
                $im = @imagecreatefromjpeg($full_med_name);
            }

			$dst2 = imagecreatetruecolor($nw2,$nh2);
			ImageCopyResampled($dst2, $im, 0, 0, 0, 0, $nw2, $nh2, $w, $h);

            if ($out_ext == 'gif')
			{
                imagegif($dst2,$full_small_name,80);
            }
            elseif($out_ext == 'png')
            {
                imagepng($dst2,$full_small_name,80);
            }
            else
            {
                imagejpeg($dst2,$full_small_name,80);
            }


			imagedestroy($im);
		}

		return true;

	}
	else
	{
		return false;
	}
}

?>